package com.itlong.cloud.propertyapp.dao;

import com.itlong.cloud.POJO.VO.app.property.app.PropertyAppMessageVO;
import com.itlong.cloud.POJO.VO.app.property.app.PropertyAppNoticeInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      物业app消息模块数据访问层
 * </desc>
 *
 * @createDate2020/1/3
 **/
@Mapper
@Repository
public interface IPropertyAppMessageDao {

    /**
     * <desc>
     *      保存发布的公告信息
     * </desc>
     *
     * @param params
     * @return
     * @Author Zhu.yj
     * @createDate  2020/1/3
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      获取公告列表
     * </desc>
     *
     * @param params 查询参数
     * @return
     * @Author Zhu.yj
     * @createDate  2020/1/3
     */
    List<PropertyAppNoticeInfoVO> getNoticeList(Map<String, Object> params);

    /**
     * <desc>
     *      公告列表总数
     * </desc>
     *
     * @param params 查询参数
     * @return
     * @Author Zhu.yj
     * @createDate  2020/2/18
     */
    int getNoticeListCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取公告详情
     * </desc>
     *
     * @param projectId
     * @param noticeId 消息id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/1/3
     */
    Map<String,Object> getNoticeDetail(@Param("projectId") String projectId,@Param("noticeId") String noticeId);

    /**
     * <desc>
     *      统计用户读取该消息的记录数
     * </desc>
     *
     * @param userId
     * @param noticeId
     * @return
     * @Author Zhu.yj
     * @createDate  2020/1/3
     */
    Integer userNoticeCount(@Param("userId") String userId,@Param("noticeId") String noticeId);

    /**
     * <desc>
     *      获取消息中心列表
     * </desc>
     *
     * @return 消息中心列表
     * @author wangzhi
     * @createDate 2020/02/17
     */
    List<PropertyAppMessageVO> getMessagePage(Map<String, Object> params);

    /**
     * <desc>
     *      获取公告消息内容列表
     * </desc>
     *
     * @param projectId 项目id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/13
     */
    List<String> getNoticeContent(@Param("projectId") String projectId);

    /**
     * <desc>
     *      获取消息中心列表未读消息条数
     * </desc>
     *
     * @return 消息中心列表未读消息条数
     * @author wangzhi
     * @createDate 2020/03/23
     */
    Integer getUnReadCount(Map<String, Object> params);
}
